/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import bean.Imagem;
import java.io.Serializable;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author fernando
 */
public class ImagemDao implements Serializable {

    private Conexao conexao = new ConexaoPostgres();
    private PreparedStatement ps;
    private boolean sucess = false;

    public int cadastrarImagem(Imagem img) {
        int id = -1;
        try {
            if (validarCadastroImagem(img.getNome())) {


                ps = conexao.getConnection().prepareStatement("INSERT INTO imagens (conteudo, formato, nome) VALUES (?, ?, ?)");
                ps.setBytes(1, img.getConteudo());
                ps.setString(2, img.getFormato());
                ps.setString(3, img.getNome());
                ps.executeUpdate();
                conexao.closeConnection();


                ps = conexao.getConnection().prepareStatement("SELECT id FROM imagens WHERE formato = ? AND nome = ?");
                ps.setString(1, img.getFormato());
                ps.setString(2, img.getNome());
                ResultSet rs = ps.executeQuery();
                conexao.closeConnection();

                if (rs.next()) {
                    return rs.getInt("id");

                }
            }

        } catch (SQLException ex) {
            Logger.getLogger(ImagemDao.class.getName()).log(Level.SEVERE, null, ex);
            conexao.closeConnection();
            return id;
        }
        return id;
    }

    public Imagem consultarImagem(int id) {
        Imagem i = null;
        System.out.println("Consultei a imagem de id : "+ id);
        try {
            if (id != 0) {
                ps = conexao.getConnection().prepareStatement("SELECT conteudo, formato, nome FROM imagens WHERE id = ?");
                ps.setInt(1, id);
                ResultSet rs = ps.executeQuery();
                conexao.closeConnection();

                if (rs.next()) {
                    i = new Imagem();
                    i.setConteudo(rs.getBytes("conteudo"));
                    i.setFormato(rs.getString("formato"));
                    i.setId(id);
                    i.setNome(rs.getString("nome"));
                    System.out.println("Imagem não é nula");
                }

            }


        } catch (SQLException ex) {
            Logger.getLogger(ImagemDao.class.getName()).log(Level.SEVERE, null, ex);
            conexao.closeConnection();
            return i;
        }
        return i;
    }

    public boolean validarCadastroImagem(String nomeArquivo) {

        boolean resultado = false;

        try {
            ps = conexao.getConnection().prepareStatement("SELECT id FROM imagens WHERE nome = ?");
            ps.setString(1, nomeArquivo);
            ResultSet rs = ps.executeQuery();
            conexao.closeConnection();
            if (!rs.next()) {
                resultado = true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(PDFDao.class.getName()).log(Level.SEVERE, null, ex);
        }

        return resultado;

    }

    public boolean removerImagem(int id) {

        boolean retorno = false;

        try {
            ps = conexao.getConnection().prepareStatement("DELETE FROM imagens WHERE id = ?");
            ps.setInt(1, id);
            ps.executeUpdate();
            conexao.closeConnection();
            retorno = true;

        } catch (SQLException ex) {
            Logger.getLogger(PDFDao.class.getName()).log(Level.SEVERE, null, ex);
        }


        return retorno;

    }
}
